﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Transactions;

using Microsoft.Practices.Unity;

using Arquitetura.Architectural.Model;
using Arquitetura.Architectural.BusinessLogic;
using Arquitetura.Architectural.Aspects;
using Arquitetura.Model;
using Arquitetura.DataLayer;

namespace Arquitetura.BusinessLogic
{
    public class SecretariaFacade : Facade, ISecretariaFacade
    {
        #region Atributo(s)
        private readonly IAlunoProcess m_alunoProcess;
        #endregion Atributo(s)

        #region Construtor(es)
        public SecretariaFacade()
        {
            m_alunoProcess = new AlunoProcess();
        }

        [InjectionConstructor]
        public SecretariaFacade(IAlunoProcess alunoProcess)
        {
            m_alunoProcess = alunoProcess;
        }
        #endregion Construtor(es)

        #region Método(s)
        [TransactionScope]
        public Resultado InserirAluno(Aluno aluno)
        {
            return m_alunoProcess.Inserir(aluno);
        }

        [TransactionScope]
        public Resultado AlterarAluno(Aluno aluno)
        {
            return m_alunoProcess.Alterar(aluno);
        }

        public Resultado<IList<Aluno>> ListarAluno()
        {
            return m_alunoProcess.Listar();
        }

        public Resultado<IList<Aluno>> ListarAluno(Aluno alunoFiltro)
        {
            return m_alunoProcess.Listar(alunoFiltro);
        }
        #endregion Método(s)
    }
}
